/*
 * Title: 周期串（Periodic Strings）
 * Author: Yuanshun L
 * Created: 29-Sep-2021
 */
#include<stdio.h>
#include<string.h>
#define MAXN 81

int main() {
    char s[MAXN] = "abcabcabc";
    int n = strlen(s),i;

    // i表示测试的最小长度
    for(i=1;i<=n/2;i++){
        int m,flag=1; // flag为是否找到周期的标志

        if(n%i !=0) continue;// i不可能作为周期
        m = n / i; // 以i为周期，那么可以划分成m块
        while(--m){ // 拿第一块依次与2,3,...,m块进行比较
            int j;

            for(j=0;j<i;j++){
                if(s[j]!=s[m*i+j]) break;
            }
            if(j<i){
                flag=0; break;
            }
        }
        // 一旦找到周期则退出
        if(flag) break;
    }
    // 字符串总有一个周期，如果找不到字符串一半长度以下的周期，那么周期就是字符串本身
    if(i>=n/2){
        printf("The mininum of period is %d",n);
    }
    else{
        printf("The mininum of period is %d",i);
    }
    return 0;
}
